モジュール詳細:マークスクリプト

内側はチューリング完全、外側はド派手な縞模様。

このモジュールはコンピューターであり、画面、赤い電源ボタン、キーボードを備えている。 キーが押されると、あなたが書かなければならないプログラムの記述タスクが提供される。タスクの一覧とその意味は、このマニュアルの末尾に掲載されている。 タスクをこなすプログラムを実行すると、モジュールは解除される。このモジュールにミスが記録されることはない。

プログラムが記述された状態で電源ボタンを押すと、プログラムが実行される。プログラム実行中に押すと、代わりにプログラムが停止する。

テトリスのZの形をしたキーを含め、ほぼすべてのキーボード上のキーは、そのキーに表示されている文字を現在の行に追加するだけである。例外は以下の通りである。

  • : タスクの表示/非表示。表示中はその他の操作を受け付けない。
  • : 現在の行にある末尾の文字を取り除く。この操作は?を削除しようとしても実行されないことに注意すること。この行は、プログラム実行時にランダムな値が入る行である。
  • , : カーソルをそれぞれ前後の行に移動させる。

実際のキーボードも入力に使用できる。それぞれの文字、スペースキー、backspaceキー、矢印キーは常に期待通りに機能する。 Enterキーと数字は、Shiftキーを押した状態でない限り、正常に機能する。 以下の表は、Shiftを押したときに実際のキーが何に変わるかを示している。実際のキーボードを使用する際は、NumLockの状態に気をつけること。

12345678Enter
«

プログラムは、当然のことながらMarkscriptと呼ばれるプログラミング言語で書くことになる。 以下にその完全なドキュメントを示す。 タスクで示されるすべての変数は、プログラムが実行される前に自動的に値が与えられる。 正しい出力が5回連続して返されると、モジュールは解除される。 正しくない出力が返されたり、モジュールが構文エラーのある行を実行しようとすると、画面に問題内容が表示され、プログラムは停止する。 この状態になった際は、を押すとプログラム画面に戻る。

この言語のプログラムでは、ほとんどの場合、各行が上から下へ順に実行される。 以下の例外がない限り、ある行が実行された後は、その行の下の行が実行される。 例外は、他の行をスキップしたり、プログラムの前後の行に進んだりしてしまう行のことである。

コメントはプログラマーがコードのセクションで行っていることを残しやすくするものであり、実行時にほぼ無視される。 コメントは任意の行の末尾に対して、先頭にスペースと«を付けることで加えることができる。 コメントにはスペースや数字を加えることはできず、同じコメントは複数回使用しないことが推奨される。コメントは一行につき一つまでである。
構文: [コード] «[コメント]
例: ♫0 «OWARI, ₪MUGENLOOP «MUGENLOOP, ☼X 21 «HOGEHOGE, HENSU√ «FUGAFUGA

変数は、プログラムが今後使用するため保持しておく数値のデータである。 変数の定義は、まずを入力し、次に名前を入力し、スペースの後に数字または定義済みの変数名を入力する。 既に存在する名前で新しい変数を定義しようとするとエラーになる。 値を変更するには、定義済みの変数名の後にを付ける。 数値の前にを付けることで、値を負の数にすることもできる。変数名に対してこれを行うことはできないので注意すること。
構文: √[名前] [値]
例: √SIX 7, SIX√ 6 «SYUSEI, √COPY ORIGINAL, √MINUSONE ♣1

Ifステートメントは、特定の条件が真であるか判定する際に使われる。Ifステートメントを作成するには、開始行にを入力し、その後に変数名、そしてスペースの後にチェックしたい内容に対応する適切なシンボルセットを付け加え、比較対象の値を続けて入力する。条件は「〜より小さい」「〜と等しい」「〜より大きい」が使用でき、それぞれ , ∩∩, ♣∩で示される。条件が真である場合、次に実行される行の位置は、そこから二行下である。
構文: ◊[名前] [条件][値]
例: ◊NUM ∩∩0, ◊SMALLNUM ∩♣10, ◊KUSODEKA ♣∩MILLION, ◊ANSWER ∩42

ジャンプはプログラム内の別の部分へ移動する際に使われる。ジャンプを記述するには、最初にを入力し、 ジャンプしたい行のコメントを記述する。 複数の行にそのコメントがある場合、一番上が使用される。
構文: ₪[コメント]
例: ₪TOP, ₪BACK, ₪JUMPSAKI, ₪JUMPTWO «JUMPONE

加算は、この言語で唯一直接使用できる演算である。記述するには、最初にを記入し、その後に変数名、そしてスペースの後に加算したい値を入力する。加算後の新たな値は自動的に代入される。
構文: ☼[名前] [値]
例s: ☼SMALLNUM 100, ☼KOREDEMO UGOKIMASU, ☼NIBAI NIBAI, ☼HINT ♣1

リターンは、この処理においては、特定の値を出力してプログラムを終了する際に使用される。 リターンを行うには、最初にを記述し、リターンしたい値を続けて記入する。間違った値がリターンされるとエラーとなる。
構文: ♫[値]
例: ♫0, ♫HENSUMOUGOKUYO, ♫♣1, ♫1 «FINISH

タスク一覧とその和訳

タスクは「Create a program which returns ...」(...を返すプログラムを作成せよ)から始まる
命令和訳
√P times √Q√Pの√Q倍
√Q is divisible by 5, and 0 otherwise√Qが5で割り切れる場合は1、それ以外は0
the larger value minus the smaller value when given numbers √P and √Q値√Pと√Qに対し、大きい方から小さい方を引いた値
what you would need to add to √Q to get 0√Qに足して0にするために必要な数
the √Qth triangular number (sequence is 1, 3, 6, 10, 15, 21 etc.)√Q番目の三角数(1, 3, 6, 10, 15, 21 ...)
the √Qth Fibonacci number (sequence is 1, 1, 2, 3, 5, 8, 13 etc.)√Q番目のフィボナッチ数(1, 1, 2, 3, 5, 8, 13 ...)
√P modulo √Q (the remainder after a division)√Pを√Qでモジュロした値(除算の剰余)
the average between √P and √Q (add them then divide by 2)√Pと√Qの平均(両方を足して2で割る)
√P times 2, minus √Q√Pを2倍し、√Qを引く
√Q divided by 2 if √Q is even, and √Q times 3 plus 1 otherwise√Qが偶数の場合は2で割り、そうでない場合は√Qを3倍して1を足した値
the digital root of √Q (adding up all digits until you end up with just one digit)√Qの数字根(各桁を一桁になるまで足し合わせる)
√Q, times itself√Qに自身の数を掛けた値
the value 1-4 missing when given numbers √P, √Q, and √R値1-4を取る√P, √Q, √Rに対し、唯一存在しない値
the closest multiple of 9 to given number √Q√Qに最も近い9の倍数
the middle value when given numbers √P, √Q, and √R√P, √Q, √Rに対する中央値
the greatest divisor of √P and √Q√Pと√Qの最大公約数
the number of 1s within number √Q when converted to binary (base 2 instead of 10)√Qをバイナリ(二進数)で表した時の1の個数
the sum of the first √Q positive even numbers先頭√Q個の正の偶数の総和
the area of a triangle with base √P and height √Q底辺が√Pで高さが√Qの三角形の面積
the sum of all odd numbers between √P and √Q (inclusive)(端点を含む)√Pから√Qの間にあるすべての奇数の総和
the sum of the highest √Q odd numbers less than 100100未満の奇数のうち上から√Q個の総和